
/*
*实例化对象
* 1.为这个对象分配内存\
* 2.调用合适的构造方法
*  */

public class Date {

    private int year;
    private int month;
    public int day;

    public void setMonth(int month) {
        this.month = month;
    }

    public int getMonth() {
        return month;
    }

    public void setYear(int year) {
    this.year = year;
}
public int getYear() {
    return this.year;
}


    /*
    * 构造方法
    * 1.方法名和类名一样,没有返回值
    * 2.在整个生命周期只使用一次
    * 3.初始化字段
    * */
    public Date() {
        this.year = 2022;
        this.month = 8;
        this.day = 18;
        System.out.println("不带参数的构造方法!");
        /*
        * 编译器会默认提供一个不带参数的构造方法
        * 提供了构造方法编译器就不会提供默认的构造方法
        * 编译器会提供不同的参数方法
        * 1.
        * 方法的重载
        * 1.方法名相同
        * 2.参数列表个数 类型 顺序不同
        * 3.和返回值无关
        * */

    }

    public Date(int year, int month) {
        this.year = year;
        this.month = month;
    }

    public Date(int year) {
        this.year = year;
    }

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public static void main(String[] args) {
        Date d1 = new Date();
        Date d2 = new Date(2022,8,19);
        d2.printDate();


    }

    public void setDate(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
        /*
        * this
        * 1.是一个引用 代表当前对象的
        * 2.只能在成员方法中使用
        * */
    }

   public void printDate() {
       System.out.println("年:" + year + "月:" + month + "日:" +day);
   }

    public static void main1(String[] args) {

        Date d1 = new Date();
        Date d2 = new Date();
        Date d3 = new Date();
// 对d1，d2，d3的日期设置
        d1.setDate(2020,9,15);
        d2.setDate(2020,9,16);
        d3.setDate(2020,9,17);
// 打印日期中的内容
        d1.printDate();
        d2.printDate();
        d3.printDate();
    }
}
